# 面向对象三大特性
#
# - 封装
#   - 将属性和方法书写到类的里面的操作即为封装
#   - 封装可以为属性和方法添加私有权限
# - 继承
#   - 子类默认继承父类的所有属性和方法
#   - 子类可以重写父类属性和方法
# - 多态
#   - 传入不同的对象，产生不同的结果

class Animal(object):
    name = '名字'
    def __init___(self):
        print('animal init')
    def eat(self):
        print('eat')
    def say(self):
        pass
class Dog(Animal):
    def __init__(self):
        print('dog init')
    def say(self):
        print('dog say wang wang')

class Cat(Animal):
    def __init__(self):
        print('cat init')
    def say(self):
        print('cat say miao miao')


dog = Dog()
dog.say()
dog.eat()
cat = Cat()
cat.say()
# dog init
# dog say wang wang
# eat
# cat init
# cat say miao miao